Process control systems, such as distributed or scalable process control systems like those used in utility power, water, wastewater or other processes, typically include one or more process controllers communicatively coupled to each other, to at least one host or operator workstation, and to one or more field devices via analog, digital or combined analog/digital buses. The field devices, which may be, for example, valves, valve positioners, switches and transmitters (e.g., temperature, pressure and flow rate sensors), perform functions within the process such as opening or closing valves and measuring process parameters.
A process controller typically receives signals indicative of process measurements made by the field devices and/or other information pertaining to the field devices, uses this information to implement a control routine, and generates control signals which are sent over the buses to the field devices to control the operation of the process. Information from the field devices and the process controller is typically made available via one or more applications that are executed by a workstation operator to perform a desired function with respect to the process, such as viewing the current state of a process, modifying the operation of a process, etc.
Some process control systems use algorithms or groups of algorithms located in the controller and/or in the field devices to perform control operations. In these process control systems, the process controller or another suitable device is configured to include and execute one or more algorithms, each of which receives inputs from and/or provides outputs to other algorithms (either within the same device or within different devices), and performs some process operation, such as measuring or detecting a process parameter, controlling a device, or performing a control operation, such as the implementation of a proportional-integral-derivative (PID) control routine. The different algorithms within a process control system are generally configured to communicate with each other (e.g., over a bus) to form one or more process control loops.
The term “algorithm” as used herein is not limited to specific protocols but, instead, includes any suitable type of block, program, hardware, firmware, etc., associated with any suitable type of control system and/or communication protocol that may be implemented to provide a control function. Moreover, algorithms may refer to basic functions such as Discrete Input (DI), Discrete Output (DO), Analog Input (AI), Analog Output (AO), PID control, PD control, PI control, P control, Control Selector, Bias/Gain Station, etc., as well as to advanced algorithms such as Setpoint Ramp Generator, Timer, Analog Alarm, Discrete Alarm, Deadtime, etc. Still further, the term algorithm as used herein may be a nested block, also referred to as a macro, which includes several algorithms, for example, or one or several macros. While algorithms typically take the form of objects within an object-oriented programming environment, algorithms may be defined using any desired data structure as part of any suitable software environment.
Process controllers are typically programmed to execute a different control function, sub-routine or control loop (which are control routines) for each of a number of different process loops defined for, or contained within a process, such as flow control loops, temperature control loops, pressure control loops, etc. As indicated above, each such control loop includes one or more input blocks, such as an analog input (AI) algorithm, a single-output control block, such as a proportional-integral-derivative (PID) or a fuzzy logic control algorithm, and an output block, such as an analog output (AO) algorithm.
Control routines, and the algorithms that implement such routines, are typically configured in accordance with a number of control techniques, including PID control, fuzzy logic control, and model-based techniques such as a Smith Predictor or Model Predictive control (MPC). In model-based control techniques, the parameters used in the routines to determine the closed loop control response are based on the dynamic process response to changes in the manipulated or measured disturbances serving as inputs to the process. A representation of this response of the process to changes in process inputs may be characterized as a process model. For instance, a first-order parameterized process model may specify values for the gain, dead time, and time constant of the process.
In a typical plant, an engineer may define and configure the process control strategy using a configuration system that runs on an operator workstation. Some configuration systems may include a library to store control function templates (typically made up of a number of algorithms), so that the engineer can select and generate an instance of a selected control element according to a particular application. The configuration system may also allow the engineer to modify or alter the generated instance of the selected control element before applying the instance to the process control environment by, for example, downloading the control element to a controller or a programmable field device.
For example, a template library typically stores various function templates that address basic measurement and control functionality. Templates can be autonomous or class-based (i.e., linked to instances instantiated from the class template and capable of propagating changes in the class template to the instances). An engineer will often use one or several function templates as a starting point in defining and configuring the corresponding process control scheme. However, because typical modifications to the function templates involve a significant engineering effort and require certain check-in, check-out, and documentation procedures, working with the template library may be time-consuming.
To simplify the task of configuring a process control system, configuration systems typically utilize several methods. In one approach, a collection of comprehensive reusable function templates and function classes is provided as part of a template library. Generally, function templates in the template library address the broadest contemplated range of configuration options and scenarios applicable to a particular function. The engineers who contribute to the template library build upon international standards such as ISA S88.0, IEC 61408, IEC 61131-3, etc., and incorporate experience and best practices from many hours of application and project engineering. Using a template library, an engineer can select a function template, modify values of function parameters to enable and configure the desired features, and disable the features unnecessary for the particular application.
For example, a certain template may allow eight possible inputs into a certain algorithm, and may accordingly include eight input blocks corresponding to these eight inputs. A user who needs only one of these inputs could effectively disable seven of the eight inputs by assigning the value FALSE to the corresponding parameters. A typical template from such a template library thus includes more features than a typical function that is specifically defined for a similar purpose. For example, a template from a template library for Continuous Control may include all the features of a corresponding specific template, as well as additional features related to equipment arbitration, support for optional tracking inputs and first out detection, conditional alarming with enable/disable capability and operator access, mode locking to optionally prevent operators from accessing the function, a failure parameter, etc. In short, a template from such a template library is likely to include all the functionality of a function an engineer may need for a particular project, and to use the function the engineer normally must change only some or all values of function parameters.
While such template libraries can significantly simplify the process of configuring process control, these template libraries unfortunately require a relatively large amount of controller memory. In particular, because engineers customize function templates by modifying function parameters, each instance inherits all algorithms from the parent function template, along with the associated parameters, regardless of whether a particular algorithm is operative in the instance. Moreover, configuration systems utilizing template libraries do not typically provide a “what you see is what you can have” user experience because each function instance retains the entire functionality of the corresponding function template within the template library, and engineers must examine many parameters to determine which algorithms and parameters are actually in use.
In a second approach at simplifying the task of configuring a process control system, a single function template may be implemented as opposed to a library of templates. In such an approach, a single function template addresses the broadest contemplated range of configuration options and scenarios applicable to every particular function within a process control system. Using the single function approach, an engineer can modify values of function parameters to enable and configure the desired features, and disable those features that are unnecessary for a particular system.
Although this approach also simplifies the configuration process, drawbacks once again include the requirement of a relatively large amount of controller memory. In addition, if additional functionality is later added to the control system, such as new devices that require new algorithms as part of their control loop, the entire template requires updating to include the new algorithms. Therefore, simplifying process control configuration systems without substantially increasing controller memory while also providing a user with flexibility and options for process control presents several challenges.